package main

import "fmt"

/*
	Phone，Camera实现接口 USB
	Phone拥有 自己的 call()方法
	使用 断言 调用call方法
*/
type USB interface {
	test()
}

type Phone struct {
}

func (p Phone) test() {
	fmt.Println("phone test")
}

func (p Phone) call() {
	fmt.Println("phone call")
}

type Camera struct {
}

func (c Camera) test() {
	fmt.Println("Camera test")
}

type Computer struct {
}

func (c Computer) working(usb USB) {
	usb.test()
	if phone, ok := usb.(Phone); ok {
		phone.call()
	}
}

func main() {
	c := Computer{}
	p := Phone{}
	ca := Camera{}

	c.working(p)

	fmt.Println("--------------")
	c.working(ca)
}
